home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / DELPHI / GLYPHV11.ZIP / SOURCES / MAIN.PAS < prev   
Encoding:
Pascal/Delphi Source File  |  1995-11-02  |  6.0 KB  |  248 lines

  1. unit Main;
  2.  
  3. (*******************************************************************)
  4. (* Glyph Viewer - version 1.1 - 01/11/1995                            *)
  5. (*        by Stephane BONNELL                                        *)
  6. (*                                                                   *)
  7. (*    This program is distributed as freeware.                       *)
  8. (*  But if you like it, please send me an email or a postcard.     *)
  9. (*        EMail: sbonnell@teaser.fr                                   *)
  10. (*      SMail: 24 bvd Arago, 75013 Paris, France                   *)
  11. (*******************************************************************)
  12. (*    Main window                                                       *)
  13. (*******************************************************************)
  14.  
  15. interface
  16.  
  17. uses
  18.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  19.   Forms, Dialogs, Buttons, StdCtrls, ExtCtrls, Menus;
  20.  
  21. type
  22.   TfmMain = class(TForm)
  23.     SpeedButton1: TSpeedButton;
  24.     SpeedButton2: TSpeedButton;
  25.     SpeedButton3: TSpeedButton;
  26.     SpeedButton4: TSpeedButton;
  27.     SpeedButton5: TSpeedButton;
  28.     SpeedButton6: TSpeedButton;
  29.     SpeedButton7: TSpeedButton;
  30.     SpeedButton8: TSpeedButton;
  31.     SpeedButton9: TSpeedButton;
  32.     SpeedButton10: TSpeedButton;
  33.     SpeedButton11: TSpeedButton;
  34.     SpeedButton12: TSpeedButton;
  35.     SpeedButton13: TSpeedButton;
  36.     SpeedButton14: TSpeedButton;
  37.     SpeedButton15: TSpeedButton;
  38.     SpeedButton16: TSpeedButton;
  39.     SpeedButton17: TSpeedButton;
  40.     SpeedButton18: TSpeedButton;
  41.     SpeedButton19: TSpeedButton;
  42.     SpeedButton20: TSpeedButton;
  43.     SpeedButton21: TSpeedButton;
  44.     SpeedButton22: TSpeedButton;
  45.     SpeedButton23: TSpeedButton;
  46.     SpeedButton24: TSpeedButton;
  47.     SpeedButton25: TSpeedButton;
  48.     SpeedButton26: TSpeedButton;
  49.     SpeedButton27: TSpeedButton;
  50.     SpeedButton28: TSpeedButton;
  51.     SpeedButton29: TSpeedButton;
  52.     SpeedButton30: TSpeedButton;
  53.     SpeedButton31: TSpeedButton;
  54.     SpeedButton32: TSpeedButton;
  55.     SpeedButton33: TSpeedButton;
  56.     SpeedButton34: TSpeedButton;
  57.     SpeedButton35: TSpeedButton;
  58.     SpeedButton36: TSpeedButton;
  59.     SpeedButton37: TSpeedButton;
  60.     SpeedButton38: TSpeedButton;
  61.     SpeedButton39: TSpeedButton;
  62.     SpeedButton40: TSpeedButton;
  63.  
  64.     BvSButton: TBevel;
  65.     BtNext: TBitBtn;
  66.     BtDisable: TBitBtn;
  67.     dgOpen: TOpenDialog;
  68.     btDir: TBitBtn;
  69.     PMNumGl: TPopupMenu;
  70.     CmNumGlyphs: TMenuItem;
  71.     cm1glyph: TMenuItem;
  72.     cm2Glyph: TMenuItem;
  73.     cm3Glyph: TMenuItem;
  74.     cm4Glyph: TMenuItem;
  75.     cmBreak2: TMenuItem;
  76.     cmCopy: TMenuItem;
  77.     BvForm: TBevel;
  78.     BtInfo: TBitBtn;
  79.     procedure FormCreate(Sender: TObject);
  80.     procedure BtNextClick(Sender: TObject);
  81.     procedure BtDisableClick(Sender: TObject);
  82.     procedure btDirClick(Sender: TObject);
  83.     procedure SpeedButtonDblClick(Sender: TObject);
  84.     procedure SpeedButtonMouseDown(Sender: TObject; Button: TMouseButton;
  85.       Shift: TShiftState; X, Y: Integer);
  86.     procedure NumClick(Sender: TObject);
  87.     procedure cmCopyClick(Sender: TObject);
  88.     procedure BtInfoClick(Sender: TObject);
  89.   private
  90.     { Private-dΘclarations }
  91.     sSearchPath:string;
  92.     sSbName:String;
  93.     procedure Draw;
  94.   public
  95.     { Public-dΘclarations }
  96.   end;
  97.  
  98. var
  99.   fmMain: TfmMain;
  100.  
  101. implementation
  102.  
  103. {$R *.DFM}
  104.  
  105. uses Clipbrd,Info;
  106.  
  107. var
  108.   tsRes:TSearchRec;
  109.  
  110. { fill the speedbuttons with the glyphs}
  111. procedure TfmMain.Draw;
  112. var
  113.     nc:integer;
  114.     bEnd:Boolean;
  115. begin
  116.     bEnd:=False;
  117.     nc:=0;
  118.     while nc<ComponentCount do
  119.     begin
  120.         if Components[nc] is TSpeedButton then
  121.             with Components[nc] as TSpeedButton do
  122.                 if not bEnd then
  123.                 begin
  124.                     Glyph.loadFromFile(sSearchPath+TsRes.Name);
  125.                     NumGlyphs:=Glyph.width div 16;
  126.                     Hint:=TsRes.Name;
  127.                     Visible:=True;
  128.                     if FindNext(tsRes)<>0 then
  129.                     begin
  130.                         FindFirst(sSearchPath+'*.bmp',faAnyFile,TsRes);
  131.                         bEnd:=True;
  132.                     end;
  133.                 end
  134.                 else
  135.                     Visible:=False;
  136.         inc(nc);
  137.     end;
  138. end;
  139.  
  140. procedure TfmMain.FormCreate(Sender: TObject);
  141. begin
  142.     if ParamCount=1 then
  143.         sSearchPath:=ParamStr(1)
  144.     else
  145.         sSearchPath:='c:\delphi\images\buttons\';
  146.     if sSearchPath[length(sSearchPath)]<>'\' then
  147.         sSearchPath:=sSearchPath+'\';
  148.     btDir.Hint:=sSearchPath;
  149.     if FindFirst(sSearchPath+'*.bmp',faAnyFile,TsRes)<>0 then
  150.         btDir.Click
  151.     else
  152.         Draw;
  153. end;
  154.  
  155. procedure TfmMain.BtNextClick(Sender: TObject);
  156. begin
  157.     Draw;
  158. end;
  159.  
  160. procedure TfmMain.BtDisableClick(Sender: TObject);
  161. var
  162.     nc:integer;
  163. begin
  164.     with btDisable do
  165.         if Tag=0 then
  166.         begin
  167.             Caption:='Enable';
  168.             Hint:='Enable glyphs';
  169.             Tag:=1;
  170.         end
  171.         else
  172.         begin
  173.             Caption:='Disable';
  174.             Hint:='Disable glyphs';
  175.             Tag:=0;
  176.         end;
  177.  
  178.     nc:=0;
  179.     while nc<ComponentCount do
  180.     begin
  181.         if Components[nc] is TSpeedButton then
  182.             TSpeedButton(Components[nc]).Enabled:=(btDisable.Tag=0);
  183.         inc(nc);
  184.     end;
  185. end;
  186.  
  187. procedure TfmMain.btDirClick(Sender: TObject);
  188. begin
  189.     repeat
  190.         dgOpen.InitialDir:=sSearchPath;
  191.         dgOpen.FileName:='*.bmp';
  192.         if dgOpen.Execute then
  193.         begin
  194.             sSearchPath:=ExtractFilePath(dgOpen.FileName);
  195.             if sSearchPath[length(sSearchPath)]<>'\' then
  196.                 sSearchPath:=sSearchPath+'\';
  197.             btDir.Hint:=sSearchPath;
  198.         end;
  199.     until FindFirst(sSearchPath+'*.bmp',faAnyFile,TsRes)=0;
  200.     Draw;
  201. end;
  202.  
  203. procedure TfmMain.SpeedButtonDblClick(Sender: TObject);
  204. begin
  205.     ClipBoard.AsText:=sSearchPath+TSpeedButton(Sender).Hint;
  206. end;
  207.  
  208. procedure TfmMain.SpeedButtonMouseDown(Sender: TObject;
  209.   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  210. var
  211.     PtPos: TPoint;
  212. begin
  213.     if Button=mbRight then
  214.     begin
  215.         PtPos:=Point(X,Y);
  216.         PtPos:=TSpeedButton(Sender).ClientToScreen(PtPos);
  217.         sSBName:=TSpeedButton(Sender).Name;
  218.         cm1Glyph.Checked:=False;
  219.         cm2Glyph.Checked:=False;
  220.         cm3Glyph.Checked:=False;
  221.         cm4Glyph.Checked:=False;
  222.         case TSpeedButton(Sender).NumGlyphs of
  223.             1: cm1Glyph.Checked:=True;
  224.             2: cm2Glyph.Checked:=True;
  225.             3: cm3Glyph.Checked:=True;
  226.             4: cm4Glyph.Checked:=True;
  227.         end;
  228.         PMNumGl.Popup(PtPos.X,PtPos.Y);
  229.     end;
  230. end;
  231.  
  232. procedure TfmMain.NumClick(Sender: TObject);
  233. begin
  234.     TSpeedButton(FindComponent(sSbName)).NumGlyphs:=TMenuItem(Sender).Tag;
  235. end;
  236.  
  237. procedure TfmMain.cmCopyClick(Sender: TObject);
  238. begin
  239.     ClipBoard.AsText:=sSearchPath+TSpeedButton(FindComponent(sSBName)).Hint;
  240. end;
  241.  
  242. procedure TfmMain.BtInfoClick(Sender: TObject);
  243. begin
  244.     InfoBox.ShowModal;
  245. end;
  246.  
  247. end.
  248.